/* https://leetcode.cn/problems/move-zeroes */

class Solution {
public:
    // void moveZeroes(vector<int>& nums) {
    //     int dest = -1, cur = 0;
    //     for (int i = 0; i < nums.size(); ++i) {
    //         cur = i;
    //         if (nums[cur] == 0) {
    //             continue;
    //         } else {
    //             std::swap(nums[dest + 1], nums[cur]);
    //             ++dest;
    //         }
    //     }
    // }

    void moveZeroes(vector<int>& nums) {
        for (int cur = 0, dest = -1; cur < nums.size(); cur++) {
            if (nums[cur])
                std::swap(nums[++dest], nums[cur]);
        }
    }
};
